FB a NOT NULL sloupec
Otázka od: Lebeda David
12. 12. 2003 10:13
Ahoj,
mam v tabulce sloupec s NOTNULL a rad bych do nej umoznil
ukladat NULL. Muzete mi nekdo popsat spolehlivy zpusob, jak ho
upravit? IBExpert nekde manipuluje s nejakym flagem, ale to je
malo. Sloupec pak v IBConsoli ma uvedeno, ze Allows NULLs, ale
pri pokusu updatovat hodnotu na NULL vyskoci validation error na
hodnote NULL. Neboli patrne ta informace lezi i jinde nez jen v
nejakem flagu.
FB 1.02
Diky
David Lebeda
Odpovedá: Jirka
12. 12. 2003 10:39
Ahoj,
odstranit a znova pridat.
Jirka
> mam v tabulce sloupec s NOTNULL a rad bych do nej umoznil
> ukladat NULL. Muzete mi nekdo popsat spolehlivy zpusob, jak ho
> upravit? IBExpert nekde manipuluje s nejakym flagem, ale to je
Odpovedá: Libor Junek, Medisoft International
12. 12. 2003 10:37
Musis udelat Backup/Restore a pak to poslape.
Libor
----- Original Message -----
From: "Lebeda David" <david.lebeda@comarr.cz>
Sent: Friday, December 12, 2003 9:54 AM
> mam v tabulce sloupec s NOTNULL a rad bych do nej umoznil
> ukladat NULL. Muzete mi nekdo popsat spolehlivy zpusob, jak ho
> upravit? IBExpert nekde manipuluje s nejakym flagem, ale to je
> malo. Sloupec pak v IBConsoli ma uvedeno, ze Allows NULLs, ale
> pri pokusu updatovat hodnotu na NULL vyskoci validation error na
> hodnote NULL. Neboli patrne ta informace lezi i jinde nez jen v
> nejakem flagu.
>
> David Lebeda
Odpovedá: Lebeda David
12. 12. 2003 10:38
> odstranit a znova pridat.
Aha, zapomnel jsem napsat, ze se chci vyhnout nutnosti pritom
povypinat par desitek triggeru, view a procedur, v nichz ten sloupec
figuruje, takze reseni jako sloupec vymazat a jim podobna jsou az
nouzova reseni. Radeji bych nasel cestu jen prostrednictvim editace
sloupce.
David Lebeda
> > mam v tabulce sloupec s NOTNULL a rad bych do nej umoznil
> > ukladat NULL. Muzete mi nekdo popsat spolehlivy zpusob, jak ho
> > upravit? IBExpert nekde manipuluje s nejakym flagem, ale to je
Odpovedá: petr palicka
12. 12. 2003 10:51
ahoj,
ja to s uspechem resil takto:
update rdb$relation_fields
set
rdb$null_flag = null
where
rdb$field_name = 'DATUM' or
rdb$field_name = 'DATNAR'
takze vsechna pole DATUM a DATNAR v databazi
povoli nul hodnoty, prestoze puvodne byla
definovana jako NOT NULL. pripadne po novem
pripojeni.
peca
Odpovedá: Lebeda David
12. 12. 2003 11:08
> ja to s uspechem resil takto:
>
> update rdb$relation_fields
> set
> rdb$null_flag = null
> where
> rdb$field_name = 'DATUM' or
> rdb$field_name = 'DATNAR'
>
> takze vsechna pole DATUM a DATNAR v databazi
> povoli nul hodnoty, prestoze puvodne byla
> definovana jako NOT NULL. pripadne po novem
> pripojeni.
Ahoj,
zkusil jsem, ale nepomohlo to. Mozna je dulezite jeste vedet, ze field ma
domenu
(typ integer, default NULL), ale ta NOT NULL nepozaduje. Zkusil jsem i nove
pripojeni k databazi, ale nepomohlo.
David Lebeda
Odpovedá: Pavel Cisar
12. 12. 2003 11:31
Haj hou!
On 12 Dec 2003 at 9:54, Lebeda David wrote:
> mam v tabulce sloupec s NOTNULL a rad bych do nej umoznil ukladat
> NULL. Muzete mi nekdo popsat spolehlivy zpusob, jak ho upravit?
> IBExpert nekde manipuluje s nejakym flagem, ale to je malo. Sloupec
> pak v IBConsoli ma uvedeno, ze Allows NULLs, ale pri pokusu updatovat
> hodnotu na NULL vyskoci validation error na hodnote NULL. Neboli
> patrne ta informace lezi i jinde nez jen v nejakem flagu.
Bohuzel, tohle se musi promyslet dopredu FB neumoznuje zmenit NOT
NULL na NULLABLE. IBExpert sice muze cachrovat se systemovymi
tabulkami, ale v podstate to problem neresi. Pokud mi pamet dobre
slouzi, tak po takove low-level zmene je stejne nutne provest
zalohu/obnovu, aby to melo skutecny efekt, a upravena tabulka by
rozhodne nemela obsahovat data (jinak muze obnova selhat).
Nejoptimalnejsi postup je pouzivat domeny. NOT NULL definovat jen u
takovych, kde to pravdu bude vzdy bez NULL. Pokud to muze byt tak i
tak, tak se NOT NULL definuje az na sloupci. Situace do ktere jsi se
dostal pak lze resit "vymenou" domeny.
S pozdravem
Pavel Cisar ( ICQ: 89017288)
Mobil: 724 281429
http://www.ibphoenix.cz
Vse co potrebujete pro Firebird a InterBase